ngl: Fix the coloring shader on GLES 2.0
authorEmmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Sat, 13 Mar 2021 22:00:54 +0000 (22:00 +0000)
committerEmmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Sat, 13 Mar 2021 22:00:54 +0000 (22:00 +0000)
Integer varyings didn’t exist in GLSL ES 1.00, neither did the flat
attribute.

gsk/ngl/resources/coloring.glsl

index 69b21c6e2ed6605577733d421c8d0ba28c138921..5b5d46a7328688df000f2e6f01682664ab51593f 100644 (file)
@@ -2,7 +2,7 @@
 // coloring.glsl
 
 _OUT_ vec4 final_color;
-flat _OUT_ int use_color;
+_OUT_ float use_color;
 
 void main() {
   gl_Position = u_projection * u_modelview * vec4(aPosition, 0.0, 1.0);
@@ -13,9 +13,9 @@ void main() {
   // and color glpyhs (used as source). The renderer sets
   // aColor to vec4(-1) for color glyhs.
   if (distance(aColor, vec4(-1)) < 0.001)
-    use_color = 0;
+    use_color = 0.0;
   else
-    use_color = 1;
+    use_color = 1.0;
 
   final_color = gsk_premultiply(aColor) * u_alpha;
 }
@@ -24,12 +24,12 @@ void main() {
 // coloring.glsl
 
 _IN_ vec4 final_color;
-flat _IN_ int use_color;
+_IN_ float use_color;
 
 void main() {
   vec4 diffuse = GskTexture(u_source, vUv);
 
-  if (use_color == 1)
+  if (use_color > 0.0)
     gskSetOutputColor(final_color * diffuse.a);
   else
     gskSetOutputColor(diffuse * u_alpha);